package 力扣面试经典150;

/**
 * Created with IntelliJ IEDA.
 * Description:
 * User:86186
 * Date:2024-03-03
 * Time:16:58
 */

/**
 * 力扣面试经典150:58. 最后一个单词的长度
 * 简单
 * 相关标签
 * 相关企业
 * 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
 * 示例 1：
 * 输入：s = "Hello World"
 * 输出：5
 * 解释：最后一个单词是“World”，长度为5。
 */
public class lengthOfLastWord {
    public static void main(String[] args) {
        System.out.println(lengthOfLastWord("   fly me   to   the moon  "));
    }
    public static int lengthOfLastWord(String s) {
        //当前位置的索引
        int cur = s.length() - 1;
        //有效单词标识（防止一开始就是空格）
        int f = 0;
        //有效单词结束索引
        int len = s.length() - 1;
        while (cur >= 0) {
            //未遇到有效单词且当前字符是' '时，有效单词开始和结束索引都前移一个
            if (f == 0 && s.charAt(cur) == ' ') {
                len--;
                cur--;
            } else if (f == 0 && s.charAt(cur) != ' ') {  //未遇到有效单词且当前字符不是' '，有效标识为1，有效单词开始索引都前移一个
                f = 1;
                cur--;
            }else if (f == 1 && s.charAt(cur) != ' ') { //遇到有效单词且当前字符不是' '，有效单词开始索引都前移一个
                cur--;
            }else if (f == 1 && s.charAt(cur) == ' ') {  //遇到有效单词且当前字符是' '，返回单词长度
                return len-cur;
            }

        }
        return len - cur;
    }
}
